import router from '@/router'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import store from './store'

/** *
 * 路由前置守卫
 *@param to // 跳到的目标路由
 *@param from // 跳转的初始路由
 *@param next //必须执行的函数，作用是跳转
*/

const whiteList = ['/login', '/404']
router.beforeEach((to, from, next) => {
  // 1-开启进度条
  nprogress.start()
  const token = store.getters.token
  // 2-判断是否存在token
  if (token) {
    // 2.1-判断跳转为login页面
    if (to.path === '/login') {
      // 2.1.1-跳转到主页
      next('/')
      // 2.1.2-关闭进度条-带路径的next不会在触发后置守卫
      nprogress.done()
    } else { // 2.2-判断跳转不为login页面
      // 2.2.1正常跳转
      next()
    }
  } else { // 3-没有token
    // 3.1-判断是否为白名单
    if (whiteList.indexOf(to.path) !== -1) {
      // 3.1.1-放行
      next()
    } else { // 3.2-不在白名单
      // 3.2.1-跳转登录页重新登陆
      next('/login')
      // 3.2.2-关闭进度条-带路径的next不会在触发后置守卫
      nprogress.done()
    }
  }
})

/**
 *路由后置守卫
 * **/

router.afterEach((to, from, failure) => {
  // 关闭进度条
  nprogress.done()
})
